{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Pandas\n", "### Struktury danych\n", "\n", "#### Szeregi (Series)\n", "\n", "Odsyłam do ćwiczeń, gdzie **Series** zostały już omówione." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Tabelki albo ramki (DataFrame)\n", "\n", "O szergach możemy myśleć jako o tabelkach jednowymiarowych. Obiekt DataFrame (tabelka albo ramka danych) jest tabelką dwuwymiarową\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Sposoby generowania.**\n", "\n", "1. Najprostszy sposób: za pomocą słownika o wartościach w listach jednakowej długości; np. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "populacja={'płeć': 3*['K']+2*['M']+ 2*['K'],\n", " 'wiek': [31, 27, 42, 26, 15, 47, 19],\n", " 'wykształcenie': 2*['średnie']+2*['wyższe']+['podstawowe']+2*['wyższe'],\n", " 'zamieszkanie': 4*['wieś'] +3*['miasto'],\n", " 'zainteresowania':['mitologia grecka', 'szydełkowanie artystyczne', 'fizyka ciała stałego', 'zielarstwo', 'modelarstwo', 'gotowanie', 'wędrówki ludów']}" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "tabelka1=pd.DataFrame(populacja)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwiekwykształceniezamieszkaniezainteresowania
0K31średniewieśmitologia grecka
1K27średniewieśszydełkowanie artystyczne
2K42wyższewieśfizyka ciała stałego
3M26wyższewieśzielarstwo
4M15podstawowemiastomodelarstwo
5K47wyższemiastogotowanie
6K19wyższemiastowędrówki ludów
\n", "
" ], "text/plain": [ " płeć wiek wykształcenie zamieszkanie zainteresowania\n", "0 K 31 średnie wieś mitologia grecka\n", "1 K 27 średnie wieś szydełkowanie artystyczne\n", "2 K 42 wyższe wieś fizyka ciała stałego\n", "3 M 26 wyższe wieś zielarstwo\n", "4 M 15 podstawowe miasto modelarstwo\n", "5 K 47 wyższe miasto gotowanie\n", "6 K 19 wyższe miasto wędrówki ludów" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tabelka1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "klucze słownika zamieniły się na nagłówki i została dołożona numeracja, podobnie jak przy tworzeniu szeregu z listy. Możemy jednak chcieć, by wiersze opatrzone były innymi wskaźnikami niż kolejne liczby naturalne:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwiekwykształceniezamieszkaniezainteresowania
AK31średniewieśmitologia grecka
BK27średniewieśszydełkowanie artystyczne
CK42wyższewieśfizyka ciała stałego
DM26wyższewieśzielarstwo
EM15podstawowemiastomodelarstwo
FK47wyższemiastogotowanie
GK19wyższemiastowędrówki ludów
\n", "
" ], "text/plain": [ " płeć wiek wykształcenie zamieszkanie zainteresowania\n", "A K 31 średnie wieś mitologia grecka\n", "B K 27 średnie wieś szydełkowanie artystyczne\n", "C K 42 wyższe wieś fizyka ciała stałego\n", "D M 26 wyższe wieś zielarstwo\n", "E M 15 podstawowe miasto modelarstwo\n", "F K 47 wyższe miasto gotowanie\n", "G K 19 wyższe miasto wędrówki ludów" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tabelka2=pd.DataFrame(populacja, index=['A','B','C','D','E', 'F', 'G']) \n", "tabelka2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Co będzie, jeśli postąpić tak: " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwiekwykształceniezamieszkaniezainteresowania
ANaNNaNNaNNaNNaN
BNaNNaNNaNNaNNaN
CNaNNaNNaNNaNNaN
DNaNNaNNaNNaNNaN
ENaNNaNNaNNaNNaN
FNaNNaNNaNNaNNaN
GNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " płeć wiek wykształcenie zamieszkanie zainteresowania\n", "A NaN NaN NaN NaN NaN\n", "B NaN NaN NaN NaN NaN\n", "C NaN NaN NaN NaN NaN\n", "D NaN NaN NaN NaN NaN\n", "E NaN NaN NaN NaN NaN\n", "F NaN NaN NaN NaN NaN\n", "G NaN NaN NaN NaN NaN" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tabelka3=pd.DataFrame(tabelka1, index=['A','B','C','D','E', 'F', 'G'])\n", "tabelka3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A jeśli pozostawić część indeksów z tabelka1? " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwiekwykształceniezamieszkaniezainteresowania
ANaNNaNNaNNaNNaN
BNaNNaNNaNNaNNaN
CNaNNaNNaNNaNNaN
0K31.0średniewieśmitologia grecka
DNaNNaNNaNNaNNaN
ENaNNaNNaNNaNNaN
FNaNNaNNaNNaNNaN
5K47.0wyższemiastogotowanie
GNaNNaNNaNNaNNaN
\n", "
" ], "text/plain": [ " płeć wiek wykształcenie zamieszkanie zainteresowania\n", "A NaN NaN NaN NaN NaN\n", "B NaN NaN NaN NaN NaN\n", "C NaN NaN NaN NaN NaN\n", "0 K 31.0 średnie wieś mitologia grecka\n", "D NaN NaN NaN NaN NaN\n", "E NaN NaN NaN NaN NaN\n", "F NaN NaN NaN NaN NaN\n", "5 K 47.0 wyższe miasto gotowanie\n", "G NaN NaN NaN NaN NaN" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tabelka31=pd.DataFrame(tabelka1, index=['A','B','C',0,'D','E', 'F',5, 'G'])\n", "tabelka31" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Za pomocą tablicy dwuwymiarowej ndarray. (Proszę zwrócić uwagę na konieczność zastosowania transpozycji.)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "populacja2=np.array([3*['K']+2*['M']+ 2*['K'],\n", " [31, 27, 42, 26, 15, 47, 30],\n", " 2*['średnie']+2*['wyższe']+['podstawowe']+2*['wyższe'],\n", " 4*['wieś'] +3*['miasto'],\n", " ['mitologia grecka', 'szydełkowanie artystyczne', 'fizyka ciała stałego', 'zielarstwo', 'modelarstwo', 'gotowanie', 'wędrówki ludów']]).T" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwiekwykształceniezamieszkaniezainteresowania
AK31średniewieśmitologia grecka
BK27średniewieśszydełkowanie artystyczne
CK42wyższewieśfizyka ciała stałego
DM26wyższewieśzielarstwo
EM15podstawowemiastomodelarstwo
FK47wyższemiastogotowanie
GK30wyższemiastowędrówki ludów
\n", "
" ], "text/plain": [ " płeć wiek wykształcenie zamieszkanie zainteresowania\n", "A K 31 średnie wieś mitologia grecka\n", "B K 27 średnie wieś szydełkowanie artystyczne\n", "C K 42 wyższe wieś fizyka ciała stałego\n", "D M 26 wyższe wieś zielarstwo\n", "E M 15 podstawowe miasto modelarstwo\n", "F K 47 wyższe miasto gotowanie\n", "G K 30 wyższe miasto wędrówki ludów" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab2=pd.DataFrame(populacja2,index=['A','B','C','D','E', 'F', 'G'], columns=['płeć', 'wiek', 'wykształcenie', 'zamieszkanie', 'zainteresowania'], )\n", "tab2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Inne sposoby generowania opisane są na str. 136 podręcznika " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Podstawowe manipulacje na tablicach danych.\n", "\n", "1. Przestawianie wierszy" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwiekwykształceniezamieszkaniezainteresowania
AK31średniewieśmitologia grecka
EM15podstawowemiastomodelarstwo
CK42wyższewieśfizyka ciała stałego
DM26wyższewieśzielarstwo
GK30wyższemiastowędrówki ludów
FK47wyższemiastogotowanie
BK27średniewieśszydełkowanie artystyczne
\n", "
" ], "text/plain": [ " płeć wiek wykształcenie zamieszkanie zainteresowania\n", "A K 31 średnie wieś mitologia grecka\n", "E M 15 podstawowe miasto modelarstwo\n", "C K 42 wyższe wieś fizyka ciała stałego\n", "D M 26 wyższe wieś zielarstwo\n", "G K 30 wyższe miasto wędrówki ludów\n", "F K 47 wyższe miasto gotowanie\n", "B K 27 średnie wieś szydełkowanie artystyczne" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab3=tab2.reindex(['A','E','C','D','G', 'F', 'B'])\n", "tab3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Przestawianie kolumn" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['płeć', 'wiek', 'wykształcenie', 'zamieszkanie', 'zainteresowania'], dtype='object')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab3.columns #wywołanie nagłówków kolumn" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "col=['płeć', 'wykształcenie', 'wiek', 'zamieszkanie', 'zainteresowania']\n", "tab4=tab3.reindex(columns=col) #używamy tej samej metody co dla wierszy, ale musimy zdeklarować, że chodzi o kolumny" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniewiekzamieszkaniezainteresowania
AKśrednie31wieśmitologia grecka
EMpodstawowe15miastomodelarstwo
CKwyższe42wieśfizyka ciała stałego
DMwyższe26wieśzielarstwo
GKwyższe30miastowędrówki ludów
FKwyższe47miastogotowanie
BKśrednie27wieśszydełkowanie artystyczne
\n", "
" ], "text/plain": [ " płeć wykształcenie wiek zamieszkanie zainteresowania\n", "A K średnie 31 wieś mitologia grecka\n", "E M podstawowe 15 miasto modelarstwo\n", "C K wyższe 42 wieś fizyka ciała stałego\n", "D M wyższe 26 wieś zielarstwo\n", "G K wyższe 30 miasto wędrówki ludów\n", "F K wyższe 47 miasto gotowanie\n", "B K średnie 27 wieś szydełkowanie artystyczne" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Wywoływanie kolumny lub kolumn" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A K\n", "E M\n", "C K\n", "D M\n", "G K\n", "F K\n", "B K\n", "Name: płeć, dtype: object" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4['płeć']" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A średnie\n", "E podstawowe\n", "C wyższe\n", "D wyższe\n", "G wyższe\n", "F wyższe\n", "B średnie\n", "Name: wykształcenie, dtype: object" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4['wykształcenie']" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A średnie\n", "E podstawowe\n", "C wyższe\n", "D wyższe\n", "G wyższe\n", "F wyższe\n", "B średnie\n", "Name: wykształcenie, dtype: object" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4.wykształcenie #inny sposób wywołania kolumny; działa, gdy nazwa kolumny jest prawidłową nazwą zmiennej w Pythonie" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećzamieszkanie
AKwieś
EMmiasto
CKwieś
DMwieś
GKmiasto
FKmiasto
BKwieś
\n", "
" ], "text/plain": [ " płeć zamieszkanie\n", "A K wieś\n", "E M miasto\n", "C K wieś\n", "D M wieś\n", "G K miasto\n", "F K miasto\n", "B K wieś" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Wywołanie kolumn 'płeć', 'zamieszkanie'\n", "tab4[['płeć', 'zamieszkanie']]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
wykształceniewiekzamieszkanie
Aśrednie31wieś
Epodstawowe15miasto
Cwyższe42wieś
Dwyższe26wieś
Gwyższe30miasto
Fwyższe47miasto
Bśrednie27wieś
\n", "
" ], "text/plain": [ " wykształcenie wiek zamieszkanie\n", "A średnie 31 wieś\n", "E podstawowe 15 miasto\n", "C wyższe 42 wieś\n", "D wyższe 26 wieś\n", "G wyższe 30 miasto\n", "F wyższe 47 miasto\n", "B średnie 27 wieś" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Wywołanie blokowe\n", "tab4[tab4.columns[1:4]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5. Wywoływanie wiersza" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "płeć K\n", "wykształcenie średnie\n", "wiek 31\n", "zamieszkanie wieś\n", "zainteresowania mitologia grecka\n", "Name: A, dtype: object" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4.loc['A'] #klucze otrzymanego szeregu są nazwami kolumn tab4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5b. Wywoływanie wyrazu tablicy" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('15', '15')" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4['wiek']['E'], tab4.loc['E']['wiek'] #najpierw kolumna, najpierw wiersz" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'15'" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#lub tak\n", "tab4.loc['E','wiek']" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'15'" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#a także tak i tak\n", "\n", "tab4.at['E','wiek']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Za pomocą metody dostępu .at możemy także zmienić wartość w tablicy:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'17'" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4.at['E','wiek']='17'\n", "tab4.at['E','wiek']" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'18'" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4['wiek']['E']='18'\n", "tab4['wiek']['E']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Uwaga:** Gdybyśmy chcieli wywołać blok tablicy (wybrane nagłówki kolumn i wierszy), to można użyć funkcji reindex i zdefiniować nową tablicę. Np. z tab4 wybieramy nagłówki wierszy - A, C, G, F - i kolumn - płeć, wykształcenie, zainteresowanie." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "tab4b=tab4.reindex(columns=['płeć', 'wykształcenie', 'zainteresowania'], index=list('ACGF'))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniezainteresowania
AKśredniemitologia grecka
CKwyższefizyka ciała stałego
GKwyższewędrówki ludów
FKwyższegotowanie
\n", "
" ], "text/plain": [ " płeć wykształcenie zainteresowania\n", "A K średnie mitologia grecka\n", "C K wyższe fizyka ciała stałego\n", "G K wyższe wędrówki ludów\n", "F K wyższe gotowanie" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Można też postąpić tak:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniezainteresowania
AKśredniemitologia grecka
CKwyższefizyka ciała stałego
GKwyższewędrówki ludów
FKwyższegotowanie
\n", "
" ], "text/plain": [ " płeć wykształcenie zainteresowania\n", "A K średnie mitologia grecka\n", "C K wyższe fizyka ciała stałego\n", "G K wyższe wędrówki ludów\n", "F K wyższe gotowanie" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4d=tab4.loc[list('ACGF'),['płeć', 'wykształcenie', 'zainteresowania']]\n", "tab4d " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "6. Dopisywanie kolumny lub jej modyfikacja" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "tab4['wzrost']=[160,159,175,180,175, 170,164]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniewiekzamieszkaniezainteresowaniawzrost
AKśrednie31wieśmitologia grecka160
EMpodstawowe18miastomodelarstwo159
CKwyższe42wieśfizyka ciała stałego175
DMwyższe26wieśzielarstwo180
GKwyższe30miastowędrówki ludów175
FKwyższe47miastogotowanie170
BKśrednie27wieśszydełkowanie artystyczne164
\n", "
" ], "text/plain": [ " płeć wykształcenie wiek zamieszkanie zainteresowania wzrost\n", "A K średnie 31 wieś mitologia grecka 160\n", "E M podstawowe 18 miasto modelarstwo 159\n", "C K wyższe 42 wieś fizyka ciała stałego 175\n", "D M wyższe 26 wieś zielarstwo 180\n", "G K wyższe 30 miasto wędrówki ludów 175\n", "F K wyższe 47 miasto gotowanie 170\n", "B K średnie 27 wieś szydełkowanie artystyczne 164" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "tab4['wzrost']=[160,159,175,180,175, 170,166] #zmieniliśmy tylko jedną wartość!, więc metoda jest niezbyt wydajna." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniewiekzamieszkaniezainteresowaniawzrost
AKśrednie31wieśmitologia grecka160
EMpodstawowe18miastomodelarstwo159
CKwyższe42wieśfizyka ciała stałego175
DMwyższe26wieśzielarstwo180
GKwyższe30miastowędrówki ludów175
FKwyższe47miastogotowanie170
BKśrednie27wieśszydełkowanie artystyczne166
\n", "
" ], "text/plain": [ " płeć wykształcenie wiek zamieszkanie zainteresowania wzrost\n", "A K średnie 31 wieś mitologia grecka 160\n", "E M podstawowe 18 miasto modelarstwo 159\n", "C K wyższe 42 wieś fizyka ciała stałego 175\n", "D M wyższe 26 wieś zielarstwo 180\n", "G K wyższe 30 miasto wędrówki ludów 175\n", "F K wyższe 47 miasto gotowanie 170\n", "B K średnie 27 wieś szydełkowanie artystyczne 166" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "7. Usuwanie kolumny " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "del(tab4['wzrost'])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniewiekzamieszkaniezainteresowania
AKśrednie31wieśmitologia grecka
EMpodstawowe15miastomodelarstwo
CKwyższe42wieśfizyka ciała stałego
DMwyższe26wieśzielarstwo
GKwyższe30miastowędrówki ludów
FKwyższe47miastogotowanie
BKśrednie27wieśszydełkowanie artystyczne
\n", "
" ], "text/plain": [ " płeć wykształcenie wiek zamieszkanie zainteresowania\n", "A K średnie 31 wieś mitologia grecka\n", "E M podstawowe 15 miasto modelarstwo\n", "C K wyższe 42 wieś fizyka ciała stałego\n", "D M wyższe 26 wieś zielarstwo\n", "G K wyższe 30 miasto wędrówki ludów\n", "F K wyższe 47 miasto gotowanie\n", "B K średnie 27 wieś szydełkowanie artystyczne" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "8. Dopisywanie wiersza" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "tab4.loc['X']=['M','średnie', 40, 'miasto', 'sporty walki']" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniewiekzamieszkaniezainteresowania
AKśrednie31wieśmitologia grecka
EMpodstawowe18miastomodelarstwo
CKwyższe42wieśfizyka ciała stałego
DMwyższe26wieśzielarstwo
GKwyższe30miastowędrówki ludów
FKwyższe47miastogotowanie
BKśrednie27wieśszydełkowanie artystyczne
XMśrednie40miastosporty walki
\n", "
" ], "text/plain": [ " płeć wykształcenie wiek zamieszkanie zainteresowania\n", "A K średnie 31 wieś mitologia grecka\n", "E M podstawowe 18 miasto modelarstwo\n", "C K wyższe 42 wieś fizyka ciała stałego\n", "D M wyższe 26 wieś zielarstwo\n", "G K wyższe 30 miasto wędrówki ludów\n", "F K wyższe 47 miasto gotowanie\n", "B K średnie 27 wieś szydełkowanie artystyczne\n", "X M średnie 40 miasto sporty walki" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "9. Usunięcie wiersza (ćwiczenie)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "10. Nadawanie nazw zbiorczych nagłówkom kolumn i wierszy" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
socjologiapłećwykształceniewiekzamieszkaniezainteresowania
litery
AKśrednie31wieśmitologia grecka
EMpodstawowe18miastomodelarstwo
CKwyższe42wieśfizyka ciała stałego
DMwyższe26wieśzielarstwo
GKwyższe30miastowędrówki ludów
FKwyższe47miastogotowanie
BKśrednie27wieśszydełkowanie artystyczne
XMśrednie40miastosporty walki
\n", "
" ], "text/plain": [ "socjologia płeć wykształcenie wiek zamieszkanie zainteresowania\n", "litery \n", "A K średnie 31 wieś mitologia grecka\n", "E M podstawowe 18 miasto modelarstwo\n", "C K wyższe 42 wieś fizyka ciała stałego\n", "D M wyższe 26 wieś zielarstwo\n", "G K wyższe 30 miasto wędrówki ludów\n", "F K wyższe 47 miasto gotowanie\n", "B K średnie 27 wieś szydełkowanie artystyczne\n", "X M średnie 40 miasto sporty walki" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4.index.name='litery'; tab4.columns.name='socjologia'\n", "tab4" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "del(tab4.index.name) #usuwanie nazwy zbiorczej nagłówków wierszy" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
socjologiapłećwykształceniewiekzamieszkaniezainteresowania
AKśrednie31wieśmitologia grecka
EMpodstawowe18miastomodelarstwo
CKwyższe42wieśfizyka ciała stałego
DMwyższe26wieśzielarstwo
GKwyższe30miastowędrówki ludów
FKwyższe47miastogotowanie
BKśrednie27wieśszydełkowanie artystyczne
XMśrednie40miastosporty walki
\n", "
" ], "text/plain": [ "socjologia płeć wykształcenie wiek zamieszkanie zainteresowania\n", "A K średnie 31 wieś mitologia grecka\n", "E M podstawowe 18 miasto modelarstwo\n", "C K wyższe 42 wieś fizyka ciała stałego\n", "D M wyższe 26 wieś zielarstwo\n", "G K wyższe 30 miasto wędrówki ludów\n", "F K wyższe 47 miasto gotowanie\n", "B K średnie 27 wieś szydełkowanie artystyczne\n", "X M średnie 40 miasto sporty walki" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "11. Transpozycja kolumn z wierszami " ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AECDGFBX
socjologia
płećKMKMKKKM
wykształcenieśredniepodstawowewyższewyższewyższewyżsześrednieśrednie
wiek3118422630472740
zamieszkaniewieśmiastowieświeśmiastomiastowieśmiasto
zainteresowaniamitologia greckamodelarstwofizyka ciała stałegozielarstwowędrówki ludówgotowanieszydełkowanie artystycznesporty walki
\n", "
" ], "text/plain": [ " A E C \\\n", "socjologia \n", "płeć K M K \n", "wykształcenie średnie podstawowe wyższe \n", "wiek 31 18 42 \n", "zamieszkanie wieś miasto wieś \n", "zainteresowania mitologia grecka modelarstwo fizyka ciała stałego \n", "\n", " D G F \\\n", "socjologia \n", "płeć M K K \n", "wykształcenie wyższe wyższe wyższe \n", "wiek 26 30 47 \n", "zamieszkanie wieś miasto miasto \n", "zainteresowania zielarstwo wędrówki ludów gotowanie \n", "\n", " B X \n", "socjologia \n", "płeć K M \n", "wykształcenie średnie średnie \n", "wiek 27 40 \n", "zamieszkanie wieś miasto \n", "zainteresowania szydełkowanie artystyczne sporty walki " ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4T=tab4.T; tab4T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "12. Samodzielnie proszę przerobić obiekty indeks tzn. zbierające informacje dotyczące nagłówków kolumn i wierszy. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "13. Obiekt indeks jest niemutowalny i nieco podobny do krotki. Można go plasterkować:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Index(['A', 'E', 'C', 'D', 'G', 'F', 'B', 'X'], dtype='object') \n", " Index(['płeć', 'wykształcenie', 'wiek', 'zamieszkanie', 'zainteresowania'], dtype='object')\n" ] } ], "source": [ "a, b=tab4.index, tab4.columns\n", "#len(a), len(b)\n", "print(a,'\\n',b)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(Index(['D', 'G'], dtype='object'), Index(['zamieszkanie'], dtype='object'))" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[3:5], b[3:-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Metoda loc ma także wersję numeryczną iloc (patrz 5b):" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " płeć wykształcenie wiek zamieszkanie zainteresowania\n", "A K średnie 31 wieś mitologia grecka\n", "E M podstawowe 15 miasto modelarstwo\n", "C K wyższe 42 wieś fizyka ciała stałego\n", "D M wyższe 26 wieś zielarstwo\n", "G K wyższe 30 miasto wędrówki ludów\n", "F K wyższe 47 miasto gotowanie\n", "B K średnie 27 wieś szydełkowanie artystyczne\n", "X M średnie 40 miasto sporty walki \n", "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
płećwykształceniezainteresowania
AKśredniemitologia grecka
CKwyższefizyka ciała stałego
GKwyższewędrówki ludów
FKwyższegotowanie
\n", "
" ], "text/plain": [ " płeć wykształcenie zainteresowania\n", "A K średnie mitologia grecka\n", "C K wyższe fizyka ciała stałego\n", "G K wyższe wędrówki ludów\n", "F K wyższe gotowanie" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(tab4,'\\n')\n", "tab4d=tab4.loc[list('ACGF'),['płeć', 'wykształcenie', 'zainteresowania']]\n", "tab4d " ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
zamieszkaniezainteresowania
Emiastomodelarstwo
Cwieśfizyka ciała stałego
Dwieśzielarstwo
\n", "
" ], "text/plain": [ " zamieszkanie zainteresowania\n", "E miasto modelarstwo\n", "C wieś fizyka ciała stałego\n", "D wieś zielarstwo" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tab4e=tab4.iloc[[1,2,3], [3,4]]\n", "tab4e" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Operacje arytmetyczne. Wyrównywanie." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "np.random.seed(3145)\n", "a,b=np.random.randint(-2,2,(3,3)),np.random.randint(-2,2,(3,3))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cccccc
a-201
b-10-2
c1-1-1
\n", "
" ], "text/plain": [ " c cc ccc\n", "a -2 0 1\n", "b -1 0 -2\n", "c 1 -1 -1" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "indexa, indexb=['a','b','c'],['b','c',3]\n", "columnsa,columnsb=['c','cc','ccc'],['cc','ccc','x']\n", "ADF, BDF=pd.DataFrame(a,index=indexa, columns=columnsa), pd.DataFrame(b,index=indexb, columns=columnsb)\n", "ADF" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " cc ccc x\n", "b 1 1 1\n", "c -1 -2 -1\n", "3 1 0 1\n" ] } ], "source": [ "print(BDF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Funkcje uniwersalne działają tak samo skutecznie na tablicach pd jak na ndarrays:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cccccx
b2.7182822.7182822.718282
c0.3678790.1353350.367879
32.7182821.0000002.718282
\n", "
" ], "text/plain": [ " cc ccc x\n", "b 2.718282 2.718282 2.718282\n", "c 0.367879 0.135335 0.367879\n", "3 2.718282 1.000000 2.718282" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.exp(BDF)" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cccccx
b1.1585291.1585291.158529
c2.8414713.5550492.841471
31.1585291.7320511.158529
\n", "
" ], "text/plain": [ " cc ccc x\n", "b 1.158529 1.158529 1.158529\n", "c 2.841471 3.555049 2.841471\n", "3 1.158529 1.732051 1.158529" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sqrt(BDF**2+3)-np.sin(BDF)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Operacje na parze tablic." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\Krzys\\Miniconda3\\lib\\site-packages\\pandas\\core\\generic.py:7389: RuntimeWarning: '<' not supported between instances of 'str' and 'int', sort order is undefined for incomparable objects\n", " other.index, how=join, level=level, return_indexers=True)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ccccccx
aNaNNaNNaNNaN
bNaN1.0-1.0NaN
cNaN-2.0-3.0NaN
3NaNNaNNaNNaN
\n", "
" ], "text/plain": [ " c cc ccc x\n", "a NaN NaN NaN NaN\n", "b NaN 1.0 -1.0 NaN\n", "c NaN -2.0 -3.0 NaN\n", "3 NaN NaN NaN NaN" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ADF+BDF" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Komentarz.** Jeśli którykolwiek z nagłówków wiersza (kolumny) nie pojawia się w dokładnie jednej z tablic jako nagłówek wiersza (kolumny), to w tablicy wynikowej pojawi się wiersz (kolumna) z tym nagłówkiem z wyłącznie z wynikami NaN. Tam gdzie w tablicy wynikowej jest liczba; np. na miejscu $[c,cc]$, to miejsce to występuje w obu tablicach " ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ccccccx
aNaNNaNNaNNaN
bNaN0.0-2.0NaN
cNaN1.02.0NaN
3NaNNaNNaNNaN
\n", "
" ], "text/plain": [ " c cc ccc x\n", "a NaN NaN NaN NaN\n", "b NaN 0.0 -2.0 NaN\n", "c NaN 1.0 2.0 NaN\n", "3 NaN NaN NaN NaN" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CDF=ADF*BDF\n", "CDF" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ćwiczenie. Uzupełnić tablicę CDF wstawiając w miejsce NaN liczbę 5. " ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "for x in CDF.index:\n", " for y in CDF.columns:\n", " if CDF[y][x]!=CDF[y][x]:\n", " CDF[y][x]=5" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ccccccx
a5.05.05.05.0
b5.00.0-2.05.0
c5.01.02.05.0
35.05.05.05.0
\n", "
" ], "text/plain": [ " c cc ccc x\n", "a 5.0 5.0 5.0 5.0\n", "b 5.0 0.0 -2.0 5.0\n", "c 5.0 1.0 2.0 5.0\n", "3 5.0 5.0 5.0 5.0" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "CDF" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Uzasadnienie.** NaN jest tego samego typu co liczby w tabelce: np.float64. jednak np.NaN spełnia inne relacje jak zwykłe liczby: " ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(False, True)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.NaN == np.NaN, np.NaN != np.NaN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "W książce opisane jest inne rozwiązanie. Należy do mnożenia zastosować metodę mul, która ma dodatkowy argument pozwalający na zdeklarowanie, czym zastąpić NaN. Jednak daje dość nieoczekiwany rezultat." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ccccccx
a-10.00.05.0NaN
b-5.00.0-2.05.0
c5.01.02.0-5.0
3NaN5.00.05.0
\n", "
" ], "text/plain": [ " c cc ccc x\n", "a -10.0 0.0 5.0 NaN\n", "b -5.0 0.0 -2.0 5.0\n", "c 5.0 1.0 2.0 -5.0\n", "3 NaN 5.0 0.0 5.0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#zamiast ADF*BDF piszemy\n", "ADF.mul(BDF, fill_value=5.0) #5 zastępuje NaN za wyjątkiem sytuacji gdy dany wyraz nie występuje w żadnejz tablic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zauważmy jeszcze, że mnożenie nie jest przemienne, podobnie dodawanie i pozostałe operacje. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(ADF*BDF,'\\n'),\n", "\n", "BDF*ADF" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Podobnie metoda mul; Jest także jej wersja rmul (reverse multiplication), ale wyglada na to, że robi to samo." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " c cc ccc x\n", "a NaN NaN NaN NaN\n", "b NaN 0.0 -2.0 NaN\n", "c NaN 1.0 2.0 NaN\n", "3 NaN NaN NaN NaN \n", "\n", " c cc ccc x\n", "b NaN 0.0 -2.0 NaN\n", "c NaN 1.0 2.0 NaN\n", "3 NaN NaN NaN NaN\n", "a NaN NaN NaN NaN \n", "\n", " c cc ccc x\n", "a NaN NaN NaN NaN\n", "b NaN 0.0 -2.0 NaN\n", "c NaN 1.0 2.0 NaN\n", "3 NaN NaN NaN NaN\n" ] } ], "source": [ "print(ADF.mul(BDF),'\\n')\n", "print(BDF.mul(ADF),'\\n')\n", "print(ADF.rmul(BDF))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }